<ui:composition template="/resources/template/template.xhtml"
                xmlns="http://www.w3.org/1999/xhtml" 
                xmlns:ui="http://java.sun.com/jsf/facelets" 
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:p="http://primefaces.org/ui"
                xmlns:f="http://xmlns.jcp.org/jsf/core">

    <ui:define name="title">
        <h:outputText value="Authentification"/>
    </ui:define>

    <ui:define name="content">

        <h:form prependId="false">

            <div align="center">
                <h:panelGroup styleClass="width-50pct">

                    <p:panel rendered="#{not empty p:remoteUser()}" styleClass="alert alert-info">
                        <h:outputText value="Vous êtes déjà connecté à l'application. Veuillez vous déconnecter si vous voulez changer de compte ou allez dans la configuration de votre compte pour des opérations de modification de mot de passe, de vos informations personnelles etc..." />
                    </p:panel>

                    <h:panelGroup rendered="#{empty p:remoteUser()}">
                        <h:panelGroup rendered="#{!empty sessionScope['SPRING_SECURITY_LAST_EXCEPTION']}">
                            <div class="alert alert-error">
                                <h:outputText value="#{sessionScope['SPRING_SECURITY_LAST_EXCEPTION'].message}" />
                            </div>
                        </h:panelGroup>
                        <h:panelGroup rendered="#{not empty param['code']}">
                            <h:panelGroup layout="block" styleClass="alert alert-success">
                                <h:outputText value="Vous avez été déconnecté" />
                            </h:panelGroup>
                            <h:panelGroup layout="block" styleClass="alert alert-success" rendered="#{param['code'] == 'expired'}">
                                <h:outputText value="Votre session est arrivée à expiration" />
                            </h:panelGroup>
                            <h:panelGroup layout="block" styleClass="alert alert-info" rendered="#{param['code'] == 'concurrency'}">
                                <h:outputText value="Vous avez été déconnecté soit par l'administrateur de l'application, soit parce qu'une session à été ouverte avec votre compte sur un autre poste" />
                            </h:panelGroup>
                        </h:panelGroup>

                        <p:panel styleClass="panel-login">

                            <f:facet name="header">
                                <h:outputText value="Formulaire d'authentification" />
                            </f:facet>

                            <h:panelGrid columns="2">
                                <h:outputText value="Login" />
                                <p:inputText id="j_username" value="#{authentificationBean.login}" autocomplete="on" />
                                <h:outputText value="Mot de passe" />
                                <p:inputText id="j_password" value="#{authentificationBean.password}" label="j_password" autocomplete="on" type="password" />
                            </h:panelGrid>
                            <h:panelGrid columns="2">
                                <h:outputText value="Se rappeler de moi" />
                                <input type="checkbox" name="_spring_security_remember_me" />
                            </h:panelGrid>

                            <p:commandButton value="Valider" icon="ui-icon-circle-check" action="#{authentificationBean.doLogin}" ajax="false" />
                        </p:panel>

                        <h:panelGrid columns="3">
                            <p:commandLink value="Récupérer son mot de passe" action="nav-modification-password" />
                            <h:outputText value="|" />
                            <p:commandLink value="Demande de compte" />
                        </h:panelGrid>
                    </h:panelGroup>
                </h:panelGroup>
            </div>

        </h:form>

    </ui:define>

    <ui:define name="dialog">

    </ui:define>

</ui:composition>